package com.deer.wms.base.system.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class DateUtil {

    /**
     * 在指定的日期上添加指定days天数，然后返回
     *
     * @param date 指定的日期
     * @param days 需要添加的天数，可以为负数
     * @return 在指定的日期上添加指定days天数，然后返回
     */
    public static Date timeAddByDays(Date date, int days) {
        return timeAdd(date, days, TimeUnit.DAYS);
    }



    /**
     * 在指定的日期的基础上添加指定单位的数值，并返回
     *
     * @param date     指定的日期
     * @param diffTime 指定的时间数值，可以为负数
     * @param unit     指定的时间单位
     * @return 返回计算之后的日期
     */
    public static Date timeAdd(Date date, long diffTime, TimeUnit unit) {
        if (date == null) {
            return null;
        }
        long resultTime = date.getTime() + unit.toMillis(diffTime);

        return new Date(resultTime);
    }

    /**
     * 获取昨天的0点和今天的0点
     * @returno
     */
    public static Map<String, String> ZeroTime() {
        SimpleDateFormat Spdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        Date zero = cal.getTime();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)-1, 0, 0, 0);
        Date yzero  = cal.getTime();
        String today =Spdate.format(zero);
        String yesterday = Spdate.format(yzero);
        Map<String, String> map = new HashMap<>();
        map.put("today", today);
        map.put("yesterday", yesterday);
        return map;
    }



    }
